// ! moment.js
// ! version : 2.8.1
// ! authors : Tim Wood, Iskren Chernev, Moment.js contributors
// ! license : MIT
// ! momentjs.com
(function(a) {
	function b(a, b, c) {
		switch (arguments.length) {
			case 2 :
				return null != a ? a : b;
			case 3 :
				return null != a ? a : null != b ? b : c;
			default :
				throw new Error("Implement me")
		}
	}
	function c() {
		return {
			empty : !1,
			unusedTokens : [],
			unusedInput : [],
			overflow : -2,
			charsLeftOver : 0,
			nullInput : !1,
			invalidMonth : null,
			invalidFormat : !1,
			userInvalidated : !1,
			iso : !1
		}
	}
	function d(a) {
		rb.suppressDeprecationWarnings === !1 && "undefined" != typeof console
				&& console.warn && console.warn("Deprecation warning: " + a)
	}
	function e(a, b) {
		var c = !0;
		return l(function() {
					return c && (d(a), c = !1), b.apply(this, arguments)
				}, b)
	}
	function f(a, b) {
		nc[a] || (d(b), nc[a] = !0)
	}
	function g(a, b) {
		return function(c) {
			return o(a.call(this, c), b)
		}
	}
	function h(a, b) {
		return function(c) {
			return this.localeData().ordinal(a.call(this, c), b)
		}
	}
	function i() {
	}
	function j(a, b) {
		b !== !1 && E(a), m(this, a), this._d = new Date(+a._d)
	}
	function k(a) {
		var b = x(a), c = b.year || 0, d = b.quarter || 0, e = b.month || 0, f = b.week
				|| 0, g = b.day || 0, h = b.hour || 0, i = b.minute || 0, j = b.second
				|| 0, k = b.millisecond || 0;
		this._milliseconds = +k + 1e3 * j + 6e4 * i + 36e5 * h, this._days = +g
				+ 7 * f, this._months = +e + 3 * d + 12 * c, this._data = {}, this._locale = rb
				.localeData(), this._bubble()
	}
	function l(a, b) {
		for (var c in b)
			b.hasOwnProperty(c) && (a[c] = b[c]);
		return b.hasOwnProperty("toString") && (a.toString = b.toString), b
				.hasOwnProperty("valueOf")
				&& (a.valueOf = b.valueOf), a
	}
	function m(a, b) {
		var c, d, e;
		if ("undefined" != typeof b._isAMomentObject
				&& (a._isAMomentObject = b._isAMomentObject), "undefined" != typeof b._i
				&& (a._i = b._i), "undefined" != typeof b._f && (a._f = b._f), "undefined" != typeof b._l
				&& (a._l = b._l), "undefined" != typeof b._strict
				&& (a._strict = b._strict), "undefined" != typeof b._tzm
				&& (a._tzm = b._tzm), "undefined" != typeof b._isUTC
				&& (a._isUTC = b._isUTC), "undefined" != typeof b._offset
				&& (a._offset = b._offset), "undefined" != typeof b._pf
				&& (a._pf = b._pf), "undefined" != typeof b._locale
				&& (a._locale = b._locale), Fb.length > 0)
			for (c in Fb)
				d = Fb[c], e = b[d], "undefined" != typeof e && (a[d] = e);
		return a
	}
	function n(a) {
		return 0 > a ? Math.ceil(a) : Math.floor(a)
	}
	function o(a, b, c) {
		for (var d = "" + Math.abs(a), e = a >= 0; d.length < b;)
			d = "0" + d;
		return (e ? c ? "+" : "" : "-") + d
	}
	function p(a, b) {
		var c = {
			milliseconds : 0,
			months : 0
		};
		return c.months = b.month() - a.month() + 12 * (b.year() - a.year()), a
				.clone().add(c.months, "M").isAfter(b)
				&& --c.months, c.milliseconds = +b
				- +a.clone().add(c.months, "M"), c
	}
	function q(a, b) {
		var c;
		return b = J(b, a), a.isBefore(b)
				? c = p(a, b)
				: (c = p(b, a), c.milliseconds = -c.milliseconds, c.months = -c.months), c
	}
	function r(a, b) {
		return function(c, d) {
			var e, g;
			return null === d
					|| isNaN(+d)
					|| (f(
							b,
							"moment()."
									+ b
									+ "(period, number) is deprecated. Please use moment()."
									+ b + "(number, period)."), g = c, c = d, d = g), c = "string" == typeof c
					? +c
					: c, e = rb.duration(c, d), s(this, e, a), this
		}
	}
	function s(a, b, c, d) {
		var e = b._milliseconds, f = b._days, g = b._months;
		d = null == d ? !0 : d, e && a._d.setTime(+a._d + e * c), f
				&& lb(a, "Date", kb(a, "Date") + f * c), g
				&& jb(a, kb(a, "Month") + g * c), d
				&& rb.updateOffset(a, f || g)
	}
	function t(a) {
		return "[object Array]" === Object.prototype.toString.call(a)
	}
	function u(a) {
		return "[object Date]" === Object.prototype.toString.call(a)
				|| a instanceof Date
	}
	function v(a, b, c) {
		var d, e = Math.min(a.length, b.length), f = Math.abs(a.length
				- b.length), g = 0;
		for (d = 0; e > d; d++)
			(c && a[d] !== b[d] || !c && z(a[d]) !== z(b[d])) && g++;
		return g + f
	}
	function w(a) {
		if (a) {
			var b = a.toLowerCase().replace(/(.)s$/, "$1");
			a = gc[a] || hc[b] || b
		}
		return a
	}
	function x(a) {
		var b, c, d = {};
		for (c in a)
			a.hasOwnProperty(c) && (b = w(c), b && (d[b] = a[c]));
		return d
	}
	function y(b) {
		var c, d;
		if (0 === b.indexOf("week"))
			c = 7, d = "day";
		else {
			if (0 !== b.indexOf("month"))
				return;
			c = 12, d = "month"
		}
		rb[b] = function(e, f) {
			var g, h, i = rb._locale[b], j = [];
			if ("number" == typeof e && (f = e, e = a), h = function(a) {
				var b = rb().utc().set(d, a);
				return i.call(rb._locale, b, e || "")
			}, null != f)
				return h(f);
			for (g = 0; c > g; g++)
				j.push(h(g));
			return j
		}
	}
	function z(a) {
		var b = +a, c = 0;
		return 0 !== b && isFinite(b)
				&& (c = b >= 0 ? Math.floor(b) : Math.ceil(b)), c
	}
	function A(a, b) {
		return new Date(Date.UTC(a, b + 1, 0)).getUTCDate()
	}
	function B(a, b, c) {
		return fb(rb([a, 11, 31 + b - c]), b, c).week
	}
	function C(a) {
		return D(a) ? 366 : 365
	}
	function D(a) {
		return a % 4 === 0 && a % 100 !== 0 || a % 400 === 0
	}
	function E(a) {
		var b;
		a._a
				&& -2 === a._pf.overflow
				&& (b = a._a[yb] < 0 || a._a[yb] > 11 ? yb : a._a[zb] < 1
						|| a._a[zb] > A(a._a[xb], a._a[yb]) ? zb : a._a[Ab] < 0
						|| a._a[Ab] > 23 ? Ab : a._a[Bb] < 0 || a._a[Bb] > 59
						? Bb
						: a._a[Cb] < 0 || a._a[Cb] > 59 ? Cb : a._a[Db] < 0
								|| a._a[Db] > 999 ? Db : -1, a._pf._overflowDayOfYear
						&& (xb > b || b > zb) && (b = zb), a._pf.overflow = b)
	}
	function F(a) {
		return null == a._isValid
				&& (a._isValid = !isNaN(a._d.getTime()) && a._pf.overflow < 0
						&& !a._pf.empty && !a._pf.invalidMonth
						&& !a._pf.nullInput && !a._pf.invalidFormat
						&& !a._pf.userInvalidated, a._strict
						&& (a._isValid = a._isValid
								&& 0 === a._pf.charsLeftOver
								&& 0 === a._pf.unusedTokens.length)), a._isValid
	}
	function G(a) {
		return a ? a.toLowerCase().replace("_", "-") : a
	}
	function H(a) {
		for (var b, c, d, e, f = 0; f < a.length;) {
			for (e = G(a[f]).split("-"), b = e.length, c = G(a[f + 1]), c = c
					? c.split("-")
					: null; b > 0;) {
				if (d = I(e.slice(0, b).join("-")))
					return d;
				if (c && c.length >= b && v(e, c, !0) >= b - 1)
					break;
				b--
			}
			f++
		}
		return null
	}
	function I(a) {
		var b = null;
		if (!Eb[a] && Gb)
			try {
				b = rb.locale(), require("./locale/" + a), rb.locale(b)
			} catch (c) {
			}
		return Eb[a]
	}
	function J(a, b) {
		return b._isUTC ? rb(a).zone(b._offset || 0) : rb(a).local()
	}
	function K(a) {
		return a.match(/\[[\s\S]/) ? a.replace(/^\[|\]$/g, "") : a.replace(
				/\\/g, "")
	}
	function L(a) {
		var b, c, d = a.match(Kb);
		for (b = 0, c = d.length; c > b; b++)
			d[b] = mc[d[b]] ? mc[d[b]] : K(d[b]);
		return function(e) {
			var f = "";
			for (b = 0; c > b; b++)
				f += d[b] instanceof Function ? d[b].call(e, a) : d[b];
			return f
		}
	}
	function M(a, b) {
		return a.isValid()
				? (b = N(b, a.localeData()), ic[b] || (ic[b] = L(b)), ic[b](a))
				: a.localeData().invalidDate()
	}
	function N(a, b) {
		function c(a) {
			return b.longDateFormat(a) || a
		}
		var d = 5;
		for (Lb.lastIndex = 0; d >= 0 && Lb.test(a);)
			a = a.replace(Lb, c), Lb.lastIndex = 0, d -= 1;
		return a
	}
	function O(a, b) {
		var c, d = b._strict;
		switch (a) {
			case "Q" :
				return Wb;
			case "DDDD" :
				return Yb;
			case "YYYY" :
			case "GGGG" :
			case "gggg" :
				return d ? Zb : Ob;
			case "Y" :
			case "G" :
			case "g" :
				return _b;
			case "YYYYYY" :
			case "YYYYY" :
			case "GGGGG" :
			case "ggggg" :
				return d ? $b : Pb;
			case "S" :
				if (d)
					return Wb;
			case "SS" :
				if (d)
					return Xb;
			case "SSS" :
				if (d)
					return Yb;
			case "DDD" :
				return Nb;
			case "MMM" :
			case "MMMM" :
			case "dd" :
			case "ddd" :
			case "dddd" :
				return Rb;
			case "a" :
			case "A" :
				return b._locale._meridiemParse;
			case "X" :
				return Ub;
			case "Z" :
			case "ZZ" :
				return Sb;
			case "T" :
				return Tb;
			case "SSSS" :
				return Qb;
			case "MM" :
			case "DD" :
			case "YY" :
			case "GG" :
			case "gg" :
			case "HH" :
			case "hh" :
			case "mm" :
			case "ss" :
			case "ww" :
			case "WW" :
				return d ? Xb : Mb;
			case "M" :
			case "D" :
			case "d" :
			case "H" :
			case "h" :
			case "m" :
			case "s" :
			case "w" :
			case "W" :
			case "e" :
			case "E" :
				return Mb;
			case "Do" :
				return Vb;
			default :
				return c = new RegExp(X(W(a.replace("\\", "")), "i"))
		}
	}
	function P(a) {
		a = a || "";
		var b = a.match(Sb) || [], c = b[b.length - 1] || [], d = (c + "")
				.match(ec)
				|| ["-", 0, 0], e = +(60 * d[1]) + z(d[2]);
		return "+" === d[0] ? -e : e
	}
	function Q(a, b, c) {
		var d, e = c._a;
		switch (a) {
			case "Q" :
				null != b && (e[yb] = 3 * (z(b) - 1));
				break;
			case "M" :
			case "MM" :
				null != b && (e[yb] = z(b) - 1);
				break;
			case "MMM" :
			case "MMMM" :
				d = c._locale.monthsParse(b), null != d
						? e[yb] = d
						: c._pf.invalidMonth = b;
				break;
			case "D" :
			case "DD" :
				null != b && (e[zb] = z(b));
				break;
			case "Do" :
				null != b && (e[zb] = z(parseInt(b, 10)));
				break;
			case "DDD" :
			case "DDDD" :
				null != b && (c._dayOfYear = z(b));
				break;
			case "YY" :
				e[xb] = rb.parseTwoDigitYear(b);
				break;
			case "YYYY" :
			case "YYYYY" :
			case "YYYYYY" :
				e[xb] = z(b);
				break;
			case "a" :
			case "A" :
				c._isPm = c._locale.isPM(b);
				break;
			case "H" :
			case "HH" :
			case "h" :
			case "hh" :
				e[Ab] = z(b);
				break;
			case "m" :
			case "mm" :
				e[Bb] = z(b);
				break;
			case "s" :
			case "ss" :
				e[Cb] = z(b);
				break;
			case "S" :
			case "SS" :
			case "SSS" :
			case "SSSS" :
				e[Db] = z(1e3 * ("0." + b));
				break;
			case "X" :
				c._d = new Date(1e3 * parseFloat(b));
				break;
			case "Z" :
			case "ZZ" :
				c._useUTC = !0, c._tzm = P(b);
				break;
			case "dd" :
			case "ddd" :
			case "dddd" :
				d = c._locale.weekdaysParse(b), null != d
						? (c._w = c._w || {}, c._w.d = d)
						: c._pf.invalidWeekday = b;
				break;
			case "w" :
			case "ww" :
			case "W" :
			case "WW" :
			case "d" :
			case "e" :
			case "E" :
				a = a.substr(0, 1);
			case "gggg" :
			case "GGGG" :
			case "GGGGG" :
				a = a.substr(0, 2), b && (c._w = c._w || {}, c._w[a] = z(b));
				break;
			case "gg" :
			case "GG" :
				c._w = c._w || {}, c._w[a] = rb.parseTwoDigitYear(b)
		}
	}
	function R(a) {
		var c, d, e, f, g, h, i;
		c = a._w, null != c.GG || null != c.W || null != c.E
				? (g = 1, h = 4, d = b(c.GG, a._a[xb], fb(rb(), 1, 4).year), e = b(
						c.W, 1), f = b(c.E, 1))
				: (g = a._locale._week.dow, h = a._locale._week.doy, d = b(
						c.gg, a._a[xb], fb(rb(), g, h).year), e = b(c.w, 1), null != c.d
						? (f = c.d, g > f && ++e)
						: f = null != c.e ? c.e + g : g), i = gb(d, e, f, h, g), a._a[xb] = i.year, a._dayOfYear = i.dayOfYear
	}
	function S(a) {
		var c, d, e, f, g = [];
		if (!a._d) {
			for (e = U(a), a._w && null == a._a[zb] && null == a._a[yb] && R(a), a._dayOfYear
					&& (f = b(a._a[xb], e[xb]), a._dayOfYear > C(f)
							&& (a._pf._overflowDayOfYear = !0), d = bb(f, 0,
							a._dayOfYear), a._a[yb] = d.getUTCMonth(), a._a[zb] = d
							.getUTCDate()), c = 0; 3 > c && null == a._a[c]; ++c)
				a._a[c] = g[c] = e[c];
			for (; 7 > c; c++)
				a._a[c] = g[c] = null == a._a[c] ? 2 === c ? 1 : 0 : a._a[c];
			a._d = (a._useUTC ? bb : ab).apply(null, g), null != a._tzm
					&& a._d.setUTCMinutes(a._d.getUTCMinutes() + a._tzm)
		}
	}
	function T(a) {
		var b;
		a._d
				|| (b = x(a._i), a._a = [b.year, b.month, b.day, b.hour,
						b.minute, b.second, b.millisecond], S(a))
	}
	function U(a) {
		var b = new Date;
		return a._useUTC
				? [b.getUTCFullYear(), b.getUTCMonth(), b.getUTCDate()]
				: [b.getFullYear(), b.getMonth(), b.getDate()]
	}
	function V(a) {
		if (a._f === rb.ISO_8601)
			return void Z(a);
		a._a = [], a._pf.empty = !0;
		var b, c, d, e, f, g = "" + a._i, h = g.length, i = 0;
		for (d = N(a._f, a._locale).match(Kb) || [], b = 0; b < d.length; b++)
			e = d[b], c = (g.match(O(e, a)) || [])[0], c
					&& (f = g.substr(0, g.indexOf(c)), f.length > 0
							&& a._pf.unusedInput.push(f), g = g.slice(g
							.indexOf(c)
							+ c.length), i += c.length), mc[e] ? (c
					? a._pf.empty = !1
					: a._pf.unusedTokens.push(e), Q(e, c, a)) : a._strict && !c
					&& a._pf.unusedTokens.push(e);
		a._pf.charsLeftOver = h - i, g.length > 0 && a._pf.unusedInput.push(g), a._isPm
				&& a._a[Ab] < 12 && (a._a[Ab] += 12), a._isPm === !1
				&& 12 === a._a[Ab] && (a._a[Ab] = 0), S(a), E(a)
	}
	function W(a) {
		return a.replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g, function(a, b,
						c, d, e) {
					return b || c || d || e
				})
	}
	function X(a) {
		return a.replace(/[-\/\\^$*+?.()|[\]{}]/g, "\\$&")
	}
	function Y(a) {
		var b, d, e, f, g;
		if (0 === a._f.length)
			return a._pf.invalidFormat = !0, void(a._d = new Date(0 / 0));
		for (f = 0; f < a._f.length; f++)
			g = 0, b = m({}, a), b._pf = c(), b._f = a._f[f], V(b), F(b)
					&& (g += b._pf.charsLeftOver, g += 10
							* b._pf.unusedTokens.length, b._pf.score = g, (null == e || e > g)
							&& (e = g, d = b));
		l(a, d || b)
	}
	function Z(a) {
		var b, c, d = a._i, e = ac.exec(d);
		if (e) {
			for (a._pf.iso = !0, b = 0, c = cc.length; c > b; b++)
				if (cc[b][1].exec(d)) {
					a._f = cc[b][0] + (e[6] || " ");
					break
				}
			for (b = 0, c = dc.length; c > b; b++)
				if (dc[b][1].exec(d)) {
					a._f += dc[b][0];
					break
				}
			d.match(Sb) && (a._f += "Z"), V(a)
		} else
			a._isValid = !1
	}
	function $(a) {
		Z(a), a._isValid === !1
				&& (delete a._isValid, rb.createFromInputFallback(a))
	}
	function _(b) {
		var c, d = b._i;
		d === a ? b._d = new Date : u(d)
				? b._d = new Date(+d)
				: null !== (c = Hb.exec(d))
						? b._d = new Date(+c[1])
						: "string" == typeof d ? $(b) : t(d) ? (b._a = d
								.slice(0), S(b)) : "object" == typeof d
								? T(b)
								: "number" == typeof d
										? b._d = new Date(d)
										: rb.createFromInputFallback(b)
	}
	function ab(a, b, c, d, e, f, g) {
		var h = new Date(a, b, c, d, e, f, g);
		return 1970 > a && h.setFullYear(a), h
	}
	function bb(a) {
		var b = new Date(Date.UTC.apply(null, arguments));
		return 1970 > a && b.setUTCFullYear(a), b
	}
	function cb(a, b) {
		if ("string" == typeof a)
			if (isNaN(a)) {
				if (a = b.weekdaysParse(a), "number" != typeof a)
					return null
			} else
				a = parseInt(a, 10);
		return a
	}
	function db(a, b, c, d, e) {
		return e.relativeTime(b || 1, !!c, a, d)
	}
	function eb(a, b, c) {
		var d = rb.duration(a).abs(), e = wb(d.as("s")), f = wb(d.as("m")), g = wb(d
				.as("h")), h = wb(d.as("d")), i = wb(d.as("M")), j = wb(d
				.as("y")), k = e < jc.s && ["s", e] || 1 === f && ["m"]
				|| f < jc.m && ["mm", f] || 1 === g && ["h"] || g < jc.h
				&& ["hh", g] || 1 === h && ["d"] || h < jc.d && ["dd", h]
				|| 1 === i && ["M"] || i < jc.M && ["MM", i] || 1 === j
				&& ["y"] || ["yy", j];
		return k[2] = b, k[3] = +a > 0, k[4] = c, db.apply({}, k)
	}
	function fb(a, b, c) {
		var d, e = c - b, f = c - a.day();
		return f > e && (f -= 7), e - 7 > f && (f += 7), d = rb(a).add(f, "d"), {
			week : Math.ceil(d.dayOfYear() / 7),
			year : d.year()
		}
	}
	function gb(a, b, c, d, e) {
		var f, g, h = bb(a, 0, 1).getUTCDay();
		return h = 0 === h ? 7 : h, c = null != c ? c : e, f = e - h
				+ (h > d ? 7 : 0) - (e > h ? 7 : 0), g = 7 * (b - 1) + (c - e)
				+ f + 1, {
			year : g > 0 ? a : a - 1,
			dayOfYear : g > 0 ? g : C(a - 1) + g
		}
	}
	function hb(b) {
		var c = b._i, d = b._f;
		return b._locale = b._locale || rb.localeData(b._l), null === c
				|| d === a && "" === c ? rb.invalid({
					nullInput : !0
				}) : ("string" == typeof c
				&& (b._i = c = b._locale.preparse(c)), rb.isMoment(c) ? new j(
				c, !0) : (d ? t(d) ? Y(b) : V(b) : _(b), new j(b)))
	}
	function ib(a, b) {
		var c, d;
		if (1 === b.length && t(b[0]) && (b = b[0]), !b.length)
			return rb();
		for (c = b[0], d = 1; d < b.length; ++d)
			b[d][a](c) && (c = b[d]);
		return c
	}
	function jb(a, b) {
		var c;
		return "string" == typeof b
				&& (b = a.localeData().monthsParse(b), "number" != typeof b)
				? a
				: (c = Math.min(a.date(), A(a.year(), b)), a._d["set"
						+ (a._isUTC ? "UTC" : "") + "Month"](b, c), a)
	}
	function kb(a, b) {
		return a._d["get" + (a._isUTC ? "UTC" : "") + b]()
	}
	function lb(a, b, c) {
		return "Month" === b ? jb(a, c) : a._d["set" + (a._isUTC ? "UTC" : "")
				+ b](c)
	}
	function mb(a, b) {
		return function(c) {
			return null != c
					? (lb(this, a, c), rb.updateOffset(this, b), this)
					: kb(this, a)
		}
	}
	function nb(a) {
		return 400 * a / 146097
	}
	function ob(a) {
		return 146097 * a / 400
	}
	function pb(a) {
		rb.duration.fn[a] = function() {
			return this._data[a]
		}
	}
	function qb(a) {
		"undefined" == typeof ender
				&& (sb = vb.moment, vb.moment = a
						? e(
								"Accessing Moment through the global scope is deprecated, and will be removed in an upcoming release.",
								rb)
						: rb)
	}
	for (var rb, sb, tb, ub = "2.8.1", vb = "undefined" != typeof global
			? global
			: this, wb = Math.round, xb = 0, yb = 1, zb = 2, Ab = 3, Bb = 4, Cb = 5, Db = 6, Eb = {}, Fb = [], Gb = "undefined" != typeof module
			&& module.exports, Hb = /^\/?Date\((\-?\d+)/i, Ib = /(\-)?(?:(\d*)\.)?(\d+)\:(\d+)(?:\:(\d+)\.?(\d{3})?)?/, Jb = /^(-)?P(?:(?:([0-9,.]*)Y)?(?:([0-9,.]*)M)?(?:([0-9,.]*)D)?(?:T(?:([0-9,.]*)H)?(?:([0-9,.]*)M)?(?:([0-9,.]*)S)?)?|([0-9,.]*)W)$/, Kb = /(\[[^\[]*\])|(\\)?(Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Q|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|mm?|ss?|S{1,4}|X|zz?|ZZ?|.)/g, Lb = /(\[[^\[]*\])|(\\)?(LT|LL?L?L?|l{1,4})/g, Mb = /\d\d?/, Nb = /\d{1,3}/, Ob = /\d{1,4}/, Pb = /[+\-]?\d{1,6}/, Qb = /\d+/, Rb = /[0-9]*['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]+|[\u0600-\u06FF\/]+(\s*?[\u0600-\u06FF]+){1,2}/i, Sb = /Z|[\+\-]\d\d:?\d\d/gi, Tb = /T/i, Ub = /[\+\-]?\d+(\.\d{1,3})?/, Vb = /\d{1,2}/, Wb = /\d/, Xb = /\d\d/, Yb = /\d{3}/, Zb = /\d{4}/, $b = /[+-]?\d{6}/, _b = /[+-]?\d+/, ac = /^\s*(?:[+-]\d{6}|\d{4})-(?:(\d\d-\d\d)|(W\d\d$)|(W\d\d-\d)|(\d\d\d))((T| )(\d\d(:\d\d(:\d\d(\.\d+)?)?)?)?([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/, bc = "YYYY-MM-DDTHH:mm:ssZ", cc = [
			["YYYYYY-MM-DD", /[+-]\d{6}-\d{2}-\d{2}/],
			["YYYY-MM-DD", /\d{4}-\d{2}-\d{2}/],
			["GGGG-[W]WW-E", /\d{4}-W\d{2}-\d/],
			["GGGG-[W]WW", /\d{4}-W\d{2}/], ["YYYY-DDD", /\d{4}-\d{3}/]], dc = [
			["HH:mm:ss.SSSS", /(T| )\d\d:\d\d:\d\d\.\d+/],
			["HH:mm:ss", /(T| )\d\d:\d\d:\d\d/], ["HH:mm", /(T| )\d\d:\d\d/],
			["HH", /(T| )\d\d/]], ec = /([\+\-]|\d\d)/gi, fc = ("Date|Hours|Minutes|Seconds|Milliseconds"
			.split("|"), {
		Milliseconds : 1,
		Seconds : 1e3,
		Minutes : 6e4,
		Hours : 36e5,
		Days : 864e5,
		Months : 2592e6,
		Years : 31536e6
	}), gc = {
		ms : "millisecond",
		s : "second",
		m : "minute",
		h : "hour",
		d : "day",
		D : "date",
		w : "week",
		W : "isoWeek",
		M : "month",
		Q : "quarter",
		y : "year",
		DDD : "dayOfYear",
		e : "weekday",
		E : "isoWeekday",
		gg : "weekYear",
		GG : "isoWeekYear"
	}, hc = {
		dayofyear : "dayOfYear",
		isoweekday : "isoWeekday",
		isoweek : "isoWeek",
		weekyear : "weekYear",
		isoweekyear : "isoWeekYear"
	}, ic = {}, jc = {
		s : 45,
		m : 45,
		h : 22,
		d : 26,
		M : 11
	}, kc = "DDD w W M D d".split(" "), lc = "M D H h m s w W".split(" "), mc = {
		M : function() {
			return this.month() + 1
		},
		MMM : function(a) {
			return this.localeData().monthsShort(this, a)
		},
		MMMM : function(a) {
			return this.localeData().months(this, a)
		},
		D : function() {
			return this.date()
		},
		DDD : function() {
			return this.dayOfYear()
		},
		d : function() {
			return this.day()
		},
		dd : function(a) {
			return this.localeData().weekdaysMin(this, a)
		},
		ddd : function(a) {
			return this.localeData().weekdaysShort(this, a)
		},
		dddd : function(a) {
			return this.localeData().weekdays(this, a)
		},
		w : function() {
			return this.week()
		},
		W : function() {
			return this.isoWeek()
		},
		YY : function() {
			return o(this.year() % 100, 2)
		},
		YYYY : function() {
			return o(this.year(), 4)
		},
		YYYYY : function() {
			return o(this.year(), 5)
		},
		YYYYYY : function() {
			var a = this.year(), b = a >= 0 ? "+" : "-";
			return b + o(Math.abs(a), 6)
		},
		gg : function() {
			return o(this.weekYear() % 100, 2)
		},
		gggg : function() {
			return o(this.weekYear(), 4)
		},
		ggggg : function() {
			return o(this.weekYear(), 5)
		},
		GG : function() {
			return o(this.isoWeekYear() % 100, 2)
		},
		GGGG : function() {
			return o(this.isoWeekYear(), 4)
		},
		GGGGG : function() {
			return o(this.isoWeekYear(), 5)
		},
		e : function() {
			return this.weekday()
		},
		E : function() {
			return this.isoWeekday()
		},
		a : function() {
			return this.localeData().meridiem(this.hours(), this.minutes(), !0)
		},
		A : function() {
			return this.localeData().meridiem(this.hours(), this.minutes(), !1)
		},
		H : function() {
			return this.hours()
		},
		h : function() {
			return this.hours() % 12 || 12
		},
		m : function() {
			return this.minutes()
		},
		s : function() {
			return this.seconds()
		},
		S : function() {
			return z(this.milliseconds() / 100)
		},
		SS : function() {
			return o(z(this.milliseconds() / 10), 2)
		},
		SSS : function() {
			return o(this.milliseconds(), 3)
		},
		SSSS : function() {
			return o(this.milliseconds(), 3)
		},
		Z : function() {
			var a = -this.zone(), b = "+";
			return 0 > a && (a = -a, b = "-"), b + o(z(a / 60), 2) + ":"
					+ o(z(a) % 60, 2)
		},
		ZZ : function() {
			var a = -this.zone(), b = "+";
			return 0 > a && (a = -a, b = "-"), b + o(z(a / 60), 2)
					+ o(z(a) % 60, 2)
		},
		z : function() {
			return this.zoneAbbr()
		},
		zz : function() {
			return this.zoneName()
		},
		X : function() {
			return this.unix()
		},
		Q : function() {
			return this.quarter()
		}
	}, nc = {}, oc = ["months", "monthsShort", "weekdays", "weekdaysShort",
			"weekdaysMin"]; kc.length;)
		tb = kc.pop(), mc[tb + "o"] = h(mc[tb], tb);
	for (; lc.length;)
		tb = lc.pop(), mc[tb + tb] = g(mc[tb], 2);
	mc.DDDD = g(mc.DDD, 3), l(i.prototype, {
		set : function(a) {
			var b, c;
			for (c in a)
				b = a[c], "function" == typeof b
						? this[c] = b
						: this["_" + c] = b
		},
		_months : "January_February_March_April_May_June_July_August_September_October_November_December"
				.split("_"),
		months : function(a) {
			return this._months[a.month()]
		},
//		_monthsShort : "Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec"
		_monthsShort : "一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月"
				.split("_"),
		monthsShort : function(a) {
			return this._monthsShort[a.month()]
		},
		monthsParse : function(a) {
			var b, c, d;
			for (this._monthsParse || (this._monthsParse = []), b = 0; 12 > b; b++)
				if (this._monthsParse[b]
						|| (c = rb.utc([2e3, b]), d = "^" + this.months(c, "")
								+ "|^" + this.monthsShort(c, ""), this._monthsParse[b] = new RegExp(
								d.replace(".", ""), "i")), this._monthsParse[b]
						.test(a))
					return b
		},
		_weekdays : "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday"
				.split("_"),
		weekdays : function(a) {
			return this._weekdays[a.day()]
		},
		_weekdaysShort : "Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),
		weekdaysShort : function(a) {
			return this._weekdaysShort[a.day()]
		},
		_weekdaysMin : "日_一_二_三_四_五_六".split("_"),
//		_weekdaysMin : "Su_Mo_Tu_We_Th_Fr_Sa".split("_"),
		weekdaysMin : function(a) {
			return this._weekdaysMin[a.day()]
		},
		weekdaysParse : function(a) {
			var b, c, d;
			for (this._weekdaysParse || (this._weekdaysParse = []), b = 0; 7 > b; b++)
				if (this._weekdaysParse[b]
						|| (c = rb([2e3, 1]).day(b), d = "^"
								+ this.weekdays(c, "") + "|^"
								+ this.weekdaysShort(c, "") + "|^"
								+ this.weekdaysMin(c, ""), this._weekdaysParse[b] = new RegExp(
								d.replace(".", ""), "i")), this._weekdaysParse[b]
						.test(a))
					return b
		},
		_longDateFormat : {
			LT : "h:mm A",
			L : "MM/DD/YYYY",
			LL : "MMMM D, YYYY",
			LLL : "MMMM D, YYYY LT",
			LLLL : "dddd, MMMM D, YYYY LT"
		},
		longDateFormat : function(a) {
			var b = this._longDateFormat[a];
			return !b
					&& this._longDateFormat[a.toUpperCase()]
					&& (b = this._longDateFormat[a.toUpperCase()].replace(
							/MMMM|MM|DD|dddd/g, function(a) {
								return a.slice(1)
							}), this._longDateFormat[a] = b), b
		},
		isPM : function(a) {
			return "p" === (a + "").toLowerCase().charAt(0)
		},
		_meridiemParse : /[ap]\.?m?\.?/i,
		meridiem : function(a, b, c) {
			return a > 11 ? c ? "pm" : "PM" : c ? "am" : "AM"
		},
		_calendar : {
			sameDay : "[Today at] LT",
			nextDay : "[Tomorrow at] LT",
			nextWeek : "dddd [at] LT",
			lastDay : "[Yesterday at] LT",
			lastWeek : "[Last] dddd [at] LT",
			sameElse : "L"
		},
		calendar : function(a, b) {
			var c = this._calendar[a];
			return "function" == typeof c ? c.apply(b) : c
		},
		_relativeTime : {
			future : "in %s",
			past : "%s ago",
			s : "a few seconds",
			m : "a minute",
			mm : "%d minutes",
			h : "an hour",
			hh : "%d hours",
			d : "a day",
			dd : "%d days",
			M : "a month",
			MM : "%d months",
			y : "a year",
			yy : "%d years"
		},
		relativeTime : function(a, b, c, d) {
			var e = this._relativeTime[c];
			return "function" == typeof e ? e(a, b, c, d) : e.replace(/%d/i, a)
		},
		pastFuture : function(a, b) {
			var c = this._relativeTime[a > 0 ? "future" : "past"];
			return "function" == typeof c ? c(b) : c.replace(/%s/i, b)
		},
		ordinal : function(a) {
			return this._ordinal.replace("%d", a)
		},
		_ordinal : "%d",
		preparse : function(a) {
			return a
		},
		postformat : function(a) {
			return a
		},
		week : function(a) {
			return fb(a, this._week.dow, this._week.doy).week
		},
		_week : {
			dow : 0,
			doy : 6
		},
		_invalidDate : "Invalid date",
		invalidDate : function() {
			return this._invalidDate
		}
	}), rb = function(b, d, e, f) {
		var g;
		return "boolean" == typeof e && (f = e, e = a), g = {}, g._isAMomentObject = !0, g._i = b, g._f = d, g._l = e, g._strict = f, g._isUTC = !1, g._pf = c(), hb(g)
	}, rb.suppressDeprecationWarnings = !1, rb.createFromInputFallback = e(
			"moment construction falls back to js Date. This is discouraged and will be removed in upcoming major release. Please refer to https://github.com/moment/moment/issues/1407 for more info.",
			function(a) {
				a._d = new Date(a._i)
			}), rb.min = function() {
		var a = [].slice.call(arguments, 0);
		return ib("isBefore", a)
	}, rb.max = function() {
		var a = [].slice.call(arguments, 0);
		return ib("isAfter", a)
	}, rb.utc = function(b, d, e, f) {
		var g;
		return "boolean" == typeof e && (f = e, e = a), g = {}, g._isAMomentObject = !0, g._useUTC = !0, g._isUTC = !0, g._l = e, g._i = b, g._f = d, g._strict = f, g._pf = c(), hb(g)
				.utc()
	}, rb.unix = function(a) {
		return rb(1e3 * a)
	}, rb.duration = function(a, b) {
		var c, d, e, f, g = a, h = null;
		return rb.isDuration(a)
				? g = {
					ms : a._milliseconds,
					d : a._days,
					M : a._months
				}
				: "number" == typeof a
						? (g = {}, b ? g[b] = a : g.milliseconds = a)
						: (h = Ib.exec(a))
								? (c = "-" === h[1] ? -1 : 1, g = {
									y : 0,
									d : z(h[zb]) * c,
									h : z(h[Ab]) * c,
									m : z(h[Bb]) * c,
									s : z(h[Cb]) * c,
									ms : z(h[Db]) * c
								})
								: (h = Jb.exec(a))
										? (c = "-" === h[1] ? -1 : 1, e = function(
												a) {
											var b = a
													&& parseFloat(a.replace(
															",", "."));
											return (isNaN(b) ? 0 : b) * c
										}, g = {
											y : e(h[2]),
											M : e(h[3]),
											d : e(h[4]),
											h : e(h[5]),
											m : e(h[6]),
											s : e(h[7]),
											w : e(h[8])
										})
										: "object" == typeof g
												&& ("from" in g || "to" in g)
												&& (f = q(rb(g.from), rb(g.to)), g = {}, g.ms = f.milliseconds, g.M = f.months), d = new k(g), rb
				.isDuration(a)
				&& a.hasOwnProperty("_locale") && (d._locale = a._locale), d
	}, rb.version = ub, rb.defaultFormat = bc, rb.ISO_8601 = function() {
	}, rb.momentProperties = Fb, rb.updateOffset = function() {
	}, rb.relativeTimeThreshold = function(b, c) {
		return jc[b] === a ? !1 : c === a ? jc[b] : (jc[b] = c, !0)
	}, rb.lang = e("moment.lang is deprecated. Use moment.locale instead.",
			function(a, b) {
				return rb.locale(a, b)
			}), rb.locale = function(a, b) {
		var c;
		return a
				&& (c = "undefined" != typeof b ? rb.defineLocale(a, b) : rb
						.localeData(a), c
						&& (rb.duration._locale = rb._locale = c)), rb._locale._abbr
	}, rb.defineLocale = function(a, b) {
		return null !== b
				? (b.abbr = a, Eb[a] || (Eb[a] = new i), Eb[a].set(b), rb
						.locale(a), Eb[a])
				: (delete Eb[a], null)
	}, rb.langData = e(
			"moment.langData is deprecated. Use moment.localeData instead.",
			function(a) {
				return rb.localeData(a)
			}), rb.localeData = function(a) {
		var b;
		if (a && a._locale && a._locale._abbr && (a = a._locale._abbr), !a)
			return rb._locale;
		if (!t(a)) {
			if (b = I(a))
				return b;
			a = [a]
		}
		return H(a)
	}, rb.isMoment = function(a) {
		return a instanceof j || null != a
				&& a.hasOwnProperty("_isAMomentObject")
	}, rb.isDuration = function(a) {
		return a instanceof k
	};
	for (tb = oc.length - 1; tb >= 0; --tb)
		y(oc[tb]);
	rb.normalizeUnits = function(a) {
		return w(a)
	}, rb.invalid = function(a) {
		var b = rb.utc(0 / 0);
		return null != a ? l(b._pf, a) : b._pf.userInvalidated = !0, b
	}, rb.parseZone = function() {
		return rb.apply(null, arguments).parseZone()
	}, rb.parseTwoDigitYear = function(a) {
		return z(a) + (z(a) > 68 ? 1900 : 2e3)
	}, l(rb.fn = j.prototype, {
		clone : function() {
			return rb(this)
		},
		valueOf : function() {
			return +this._d + 6e4 * (this._offset || 0)
		},
		unix : function() {
			return Math.floor(+this / 1e3)
		},
		toString : function() {
			return this.clone().locale("en")
					.format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")
		},
		toDate : function() {
			return this._offset ? new Date(+this) : this._d
		},
		toISOString : function() {
			var a = rb(this).utc();
			return 0 < a.year() && a.year() <= 9999 ? M(a,
					"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]") : M(a,
					"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]")
		},
		toArray : function() {
			var a = this;
			return [a.year(), a.month(), a.date(), a.hours(), a.minutes(),
					a.seconds(), a.milliseconds()]
		},
		isValid : function() {
			return F(this)
		},
		isDSTShifted : function() {
			return this._a ? this.isValid()
					&& v(this._a, (this._isUTC ? rb.utc(this._a) : rb(this._a))
									.toArray()) > 0 : !1
		},
		parsingFlags : function() {
			return l({}, this._pf)
		},
		invalidAt : function() {
			return this._pf.overflow
		},
		utc : function(a) {
			return this.zone(0, a)
		},
		local : function(a) {
			return this._isUTC
					&& (this.zone(0, a), this._isUTC = !1, a
							&& this.add(this._d.getTimezoneOffset(), "m")), this
		},
		format : function(a) {
			var b = M(this, a || rb.defaultFormat);
			return this.localeData().postformat(b)
		},
		add : r(1, "add"),
		subtract : r(-1, "subtract"),
		diff : function(a, b, c) {
			var d, e, f = J(a, this), g = 6e4 * (this.zone() - f.zone());
			return b = w(b), "year" === b || "month" === b
					? (d = 432e5 * (this.daysInMonth() + f.daysInMonth()), e = 12
							* (this.year() - f.year())
							+ (this.month() - f.month()), e += (this
							- rb(this).startOf("month") - (f - rb(f)
							.startOf("month")))
							/ d, e -= 6e4
							* (this.zone() - rb(this).startOf("month").zone() - (f
									.zone() - rb(f).startOf("month").zone()))
							/ d, "year" === b && (e /= 12))
					: (d = this - f, e = "second" === b
							? d / 1e3
							: "minute" === b ? d / 6e4 : "hour" === b ? d
									/ 36e5 : "day" === b
									? (d - g) / 864e5
									: "week" === b ? (d - g) / 6048e5 : d), c
					? e
					: n(e)
		},
		from : function(a, b) {
			return rb.duration({
						to : this,
						from : a
					}).locale(this.locale()).humanize(!b)
		},
		fromNow : function(a) {
			return this.from(rb(), a)
		},
		calendar : function(a) {
			var b = a || rb(), c = J(b, this).startOf("day"), d = this.diff(c,
					"days", !0), e = -6 > d ? "sameElse" : -1 > d
					? "lastWeek"
					: 0 > d ? "lastDay" : 1 > d ? "sameDay" : 2 > d
							? "nextDay"
							: 7 > d ? "nextWeek" : "sameElse";
			return this.format(this.localeData().calendar(e, this))
		},
		isLeapYear : function() {
			return D(this.year())
		},
		isDST : function() {
			return this.zone() < this.clone().month(0).zone()
					|| this.zone() < this.clone().month(5).zone()
		},
		day : function(a) {
			var b = this._isUTC ? this._d.getUTCDay() : this._d.getDay();
			return null != a ? (a = cb(a, this.localeData()), this.add(a - b,
					"d")) : b
		},
		month : mb("Month", !0),
		startOf : function(a) {
			switch (a = w(a)) {
				case "year" :
					this.month(0);
				case "quarter" :
				case "month" :
					this.date(1);
				case "week" :
				case "isoWeek" :
				case "day" :
					this.hours(0);
				case "hour" :
					this.minutes(0);
				case "minute" :
					this.seconds(0);
				case "second" :
					this.milliseconds(0)
			}
			return "week" === a ? this.weekday(0) : "isoWeek" === a
					&& this.isoWeekday(1), "quarter" === a
					&& this.month(3 * Math.floor(this.month() / 3)), this
		},
		endOf : function(a) {
			return a = w(a), this.startOf(a).add(1,
					"isoWeek" === a ? "week" : a).subtract(1, "ms")
		},
		isAfter : function(a, b) {
			return b = "undefined" != typeof b ? b : "millisecond", +this
					.clone().startOf(b) > +rb(a).startOf(b)
		},
		isBefore : function(a, b) {
			return b = "undefined" != typeof b ? b : "millisecond", +this
					.clone().startOf(b) < +rb(a).startOf(b)
		},
		isSame : function(a, b) {
			return b = b || "ms", +this.clone().startOf(b) === +J(a, this)
					.startOf(b)
		},
		min : e(
				"moment().min is deprecated, use moment.min instead. https://github.com/moment/moment/issues/1548",
				function(a) {
					return a = rb.apply(null, arguments), this > a ? this : a
				}),
		max : e(
				"moment().max is deprecated, use moment.max instead. https://github.com/moment/moment/issues/1548",
				function(a) {
					return a = rb.apply(null, arguments), a > this ? this : a
				}),
		zone : function(a, b) {
			var c, d = this._offset || 0;
			return null == a
					? this._isUTC ? d : this._d.getTimezoneOffset()
					: ("string" == typeof a && (a = P(a)), Math.abs(a) < 16
							&& (a = 60 * a), !this._isUTC && b
							&& (c = this._d.getTimezoneOffset()), this._offset = a, this._isUTC = !0, null != c
							&& this.subtract(c, "m"), d !== a
							&& (!b || this._changeInProgress
									? s(this, rb.duration(d - a, "m"), 1, !1)
									: this._changeInProgress
											|| (this._changeInProgress = !0, rb
													.updateOffset(this, !0), this._changeInProgress = null)), this)
		},
		zoneAbbr : function() {
			return this._isUTC ? "UTC" : ""
		},
		zoneName : function() {
			return this._isUTC ? "Coordinated Universal Time" : ""
		},
		parseZone : function() {
			return this._tzm
					? this.zone(this._tzm)
					: "string" == typeof this._i && this.zone(this._i), this
		},
		hasAlignedHourOffset : function(a) {
			return a = a ? rb(a).zone() : 0, (this.zone() - a) % 60 === 0
		},
		daysInMonth : function() {
			return A(this.year(), this.month())
		},
		dayOfYear : function(a) {
			var b = wb((rb(this).startOf("day") - rb(this).startOf("year"))
					/ 864e5)
					+ 1;
			return null == a ? b : this.add(a - b, "d")
		},
		quarter : function(a) {
			return null == a ? Math.ceil((this.month() + 1) / 3) : this.month(3
					* (a - 1) + this.month() % 3)
		},
		weekYear : function(a) {
			var b = fb(this, this.localeData()._week.dow,
					this.localeData()._week.doy).year;
			return null == a ? b : this.add(a - b, "y")
		},
		isoWeekYear : function(a) {
			var b = fb(this, 1, 4).year;
			return null == a ? b : this.add(a - b, "y")
		},
		week : function(a) {
			var b = this.localeData().week(this);
			return null == a ? b : this.add(7 * (a - b), "d")
		},
		isoWeek : function(a) {
			var b = fb(this, 1, 4).week;
			return null == a ? b : this.add(7 * (a - b), "d")
		},
		weekday : function(a) {
			var b = (this.day() + 7 - this.localeData()._week.dow) % 7;
			return null == a ? b : this.add(a - b, "d")
		},
		isoWeekday : function(a) {
			return null == a ? this.day() || 7 : this.day(this.day() % 7
					? a
					: a - 7)
		},
		isoWeeksInYear : function() {
			return B(this.year(), 1, 4)
		},
		weeksInYear : function() {
			var a = this.localeData()._week;
			return B(this.year(), a.dow, a.doy)
		},
		get : function(a) {
			return a = w(a), this[a]()
		},
		set : function(a, b) {
			return a = w(a), "function" == typeof this[a] && this[a](b), this
		},
		locale : function(b) {
			return b === a ? this._locale._abbr : (this._locale = rb
					.localeData(b), this)
		},
		lang : e(
				"moment().lang() is deprecated. Use moment().localeData() instead.",
				function(b) {
					return b === a ? this.localeData() : (this._locale = rb
							.localeData(b), this)
				}),
		localeData : function() {
			return this._locale
		}
	}), rb.fn.millisecond = rb.fn.milliseconds = mb("Milliseconds", !1), rb.fn.second = rb.fn.seconds = mb(
			"Seconds", !1), rb.fn.minute = rb.fn.minutes = mb("Minutes", !1), rb.fn.hour = rb.fn.hours = mb(
			"Hours", !0), rb.fn.date = mb("Date", !0), rb.fn.dates = e(
			"dates accessor is deprecated. Use date instead.", mb("Date", !0)), rb.fn.year = mb(
			"FullYear", !0), rb.fn.years = e(
			"years accessor is deprecated. Use year instead.", mb("FullYear",
					!0)), rb.fn.days = rb.fn.day, rb.fn.months = rb.fn.month, rb.fn.weeks = rb.fn.week, rb.fn.isoWeeks = rb.fn.isoWeek, rb.fn.quarters = rb.fn.quarter, rb.fn.toJSON = rb.fn.toISOString, l(
			rb.duration.fn = k.prototype, {
				_bubble : function() {
					var a, b, c, d = this._milliseconds, e = this._days, f = this._months, g = this._data, h = 0;
					g.milliseconds = d % 1e3, a = n(d / 1e3), g.seconds = a
							% 60, b = n(a / 60), g.minutes = b % 60, c = n(b
							/ 60), g.hours = c % 24, e += n(c / 24), h = n(nb(e)), e -= n(ob(h)), f += n(e
							/ 30), e %= 30, h += n(f / 12), f %= 12, g.days = e, g.months = f, g.years = h
				},
				abs : function() {
					return this._milliseconds = Math.abs(this._milliseconds), this._days = Math
							.abs(this._days), this._months = Math
							.abs(this._months), this._data.milliseconds = Math
							.abs(this._data.milliseconds), this._data.seconds = Math
							.abs(this._data.seconds), this._data.minutes = Math
							.abs(this._data.minutes), this._data.hours = Math
							.abs(this._data.hours), this._data.months = Math
							.abs(this._data.months), this._data.years = Math
							.abs(this._data.years), this
				},
				weeks : function() {
					return n(this.days() / 7)
				},
				valueOf : function() {
					return this._milliseconds + 864e5 * this._days
							+ this._months % 12 * 2592e6 + 31536e6
							* z(this._months / 12)
				},
				humanize : function(a) {
					var b = eb(this, !a, this.localeData());
					return a && (b = this.localeData().pastFuture(+this, b)), this
							.localeData().postformat(b)
				},
				add : function(a, b) {
					var c = rb.duration(a, b);
					return this._milliseconds += c._milliseconds, this._days += c._days, this._months += c._months, this
							._bubble(), this
				},
				subtract : function(a, b) {
					var c = rb.duration(a, b);
					return this._milliseconds -= c._milliseconds, this._days -= c._days, this._months -= c._months, this
							._bubble(), this
				},
				get : function(a) {
					return a = w(a), this[a.toLowerCase() + "s"]()
				},
				as : function(a) {
					var b, c;
					if (a = w(a), b = this._days + this._milliseconds / 864e5, "month" === a
							|| "year" === a)
						return c = this._months + 12 * nb(b), "month" === a
								? c
								: c / 12;
					switch (b += ob(this._months / 12), a) {
						case "week" :
							return b / 7;
						case "day" :
							return b;
						case "hour" :
							return 24 * b;
						case "minute" :
							return 24 * b * 60;
						case "second" :
							return 24 * b * 60 * 60;
						case "millisecond" :
							return 24 * b * 60 * 60 * 1e3;
						default :
							throw new Error("Unknown unit " + a)
					}
				},
				lang : rb.fn.lang,
				locale : rb.fn.locale,
				toIsoString : e(
						"toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",
						function() {
							return this.toISOString()
						}),
				toISOString : function() {
					var a = Math.abs(this.years()), b = Math.abs(this.months()), c = Math
							.abs(this.days()), d = Math.abs(this.hours()), e = Math
							.abs(this.minutes()), f = Math.abs(this.seconds()
							+ this.milliseconds() / 1e3);
					return this.asSeconds() ? (this.asSeconds() < 0 ? "-" : "")
							+ "P" + (a ? a + "Y" : "") + (b ? b + "M" : "")
							+ (c ? c + "D" : "") + (d || e || f ? "T" : "")
							+ (d ? d + "H" : "") + (e ? e + "M" : "")
							+ (f ? f + "S" : "") : "P0D"
				},
				localeData : function() {
					return this._locale
				}
			});
	for (tb in fc)
		fc.hasOwnProperty(tb) && pb(tb.toLowerCase());
	rb.duration.fn.asMilliseconds = function() {
		return this.as("ms")
	}, rb.duration.fn.asSeconds = function() {
		return this.as("s")
	}, rb.duration.fn.asMinutes = function() {
		return this.as("m")
	}, rb.duration.fn.asHours = function() {
		return this.as("h")
	}, rb.duration.fn.asDays = function() {
		return this.as("d")
	}, rb.duration.fn.asWeeks = function() {
		return this.as("weeks")
	}, rb.duration.fn.asMonths = function() {
		return this.as("M")
	}, rb.duration.fn.asYears = function() {
		return this.as("y")
	}, rb.locale("en", {
				ordinal : function(a) {
					var b = a % 10, c = 1 === z(a % 100 / 10) ? "th" : 1 === b
							? "st"
							: 2 === b ? "nd" : 3 === b ? "rd" : "th";
					return a + c
				}
			}), Gb ? module.exports = rb : "function" == typeof define
			&& define.amd ? (define("moment", function(a, b, c) {
				return c.config && c.config() && c.config().noGlobal === !0
						&& (vb.moment = sb), rb
			}), qb(!0)) : qb()
}).call(this);